PL/SQL-এ Object-Oriented Programming (OOP) এর ধারণা ব্যবহার করে আপনি Object Types তৈরি করতে পারেন, যা ক্লাসের মত আচরণ করে। এতে constructor functions এবং object inheritance দুটি গুরুত্বপূর্ণ ধারণা রয়েছে।
Constructor Functions হল বিশেষ ধরনের ফাংশন যা একটি Object Type ইনস্ট্যান্স (অবজেক্ট) তৈরি করতে ব্যবহৃত হয়। এগুলি পদ্ধতিগতভাবে একটি ক্লাসের কনস্ট্রাক্টরের মতো কাজ করে। যখন আপনি একটি নতুন অবজেক্ট তৈরি করেন, তখন কনস্ট্রাক্টর ফাংশনটি সেই অবজেক্টটির প্রাথমিক মান প্রদান করে।
PL/SQL-এ কনস্ট্রাক্টর ফাংশন সাধারণত INITIALIZE
নামের থাকে (যদিও এটি যে কোনো নাম হতে পারে), এবং এটি Object Type এর এক বা একাধিক ফিল্ডে প্রাথমিক মান সেট করে।
TYPE object_type IS OBJECT (
field1 datatype,
field2 datatype,
CONSTRUCTOR FUNCTION initialize (value1 datatype, value2 datatype)
RETURN OBJECT_TYPE
);
-- Object Type Definition
CREATE OR REPLACE TYPE person_type IS OBJECT (
first_name VARCHAR2(50),
last_name VARCHAR2(50),
-- Constructor Function
CONSTRUCTOR FUNCTION person_type (fname VARCHAR2, lname VARCHAR2)
RETURN SELF AS RESULT
);
/
-- Constructor Function Implementation
CREATE OR REPLACE TYPE BODY person_type IS
-- Constructor Implementation
CONSTRUCTOR FUNCTION person_type (fname VARCHAR2, lname VARCHAR2)
RETURN SELF AS RESULT IS
BEGIN
self.first_name := fname;
self.last_name := lname;
RETURN;
END;
END;
/
এখানে, person_type
নামে একটি Object Type তৈরি করা হয়েছে। এর কনস্ট্রাক্টর ফাংশন person_type
নামে এবং first_name
এবং last_name
ফিল্ডে প্রাথমিক মান সেট করে।
DECLARE
person1 person_type;
BEGIN
-- Create an object using constructor
person1 := person_type('John', 'Doe');
DBMS_OUTPUT.PUT_LINE('Name: ' || person1.first_name || ' ' || person1.last_name);
END;
এখানে, person_type
অবজেক্ট টাইপের একটি নতুন ইনস্ট্যান্স person1
তৈরি করা হয়েছে এবং কনস্ট্রাক্টর ফাংশন ব্যবহার করে প্রথম এবং শেষ নাম সেট করা হয়েছে।
Object Inheritance হল এক ধরনের বৈশিষ্ট্য যেখানে একটি অবজেক্ট টাইপ অন্য একটি অবজেক্ট টাইপ থেকে বৈশিষ্ট্য (ফিল্ড এবং ফাংশন) উত্তরাধিকারসূত্রে পায়। এই পদ্ধতির মাধ্যমে আপনি একটি সাধারণ অবজেক্ট টাইপ তৈরি করতে পারেন এবং তারপর সেটি থেকে অন্যান্য অবজেক্ট টাইপ তৈরি করতে পারেন।
PL/SQL-এ, Object Inheritance ব্যবহার করার জন্য UNDER
কীওয়ার্ডটি ব্যবহার করা হয়, যার মাধ্যমে একটি অবজেক্ট টাইপ অন্য একটি টাইপ থেকে ইনহেরিট করে।
TYPE child_object_type UNDER parent_object_type (
-- Additional fields or methods
);
-- Parent Object Type
CREATE OR REPLACE TYPE person_type IS OBJECT (
first_name VARCHAR2(50),
last_name VARCHAR2(50),
-- Constructor Function
CONSTRUCTOR FUNCTION person_type (fname VARCHAR2, lname VARCHAR2)
RETURN SELF AS RESULT
);
/
-- Parent Object Type BODY
CREATE OR REPLACE TYPE BODY person_type IS
-- Constructor Function Implementation
CONSTRUCTOR FUNCTION person_type (fname VARCHAR2, lname VARCHAR2)
RETURN SELF AS RESULT IS
BEGIN
self.first_name := fname;
self.last_name := lname;
RETURN;
END;
END;
/
-- Child Object Type Inheriting from person_type
CREATE OR REPLACE TYPE employee_type UNDER person_type (
employee_id NUMBER,
job_title VARCHAR2(50),
CONSTRUCTOR FUNCTION employee_type (fname VARCHAR2, lname VARCHAR2, emp_id NUMBER, job VARCHAR2)
RETURN SELF AS RESULT
);
/
-- Child Object Type BODY
CREATE OR REPLACE TYPE BODY employee_type IS
-- Constructor Implementation
CONSTRUCTOR FUNCTION employee_type (fname VARCHAR2, lname VARCHAR2, emp_id NUMBER, job VARCHAR2)
RETURN SELF AS RESULT IS
BEGIN
-- Call the parent constructor
person_type.initialize(fname, lname); -- Calling the parent constructor
self.employee_id := emp_id;
self.job_title := job;
RETURN;
END;
END;
/
এখানে, employee_type
হল একটি child object type যা person_type
(parent object type) থেকে ইনহেরিট করেছে। এই child type এ নতুন দুটি ফিল্ড (employee_id
এবং job_title
) রয়েছে, এবং একটি কনস্ট্রাক্টর ফাংশন employee_type
তৈরি করা হয়েছে যা parent type এর কনস্ট্রাক্টরকে কল করে।
DECLARE
emp1 employee_type;
BEGIN
-- Create an object of the child type using constructor
emp1 := employee_type('John', 'Doe', 101, 'Manager');
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || emp1.first_name || ' ' || emp1.last_name);
DBMS_OUTPUT.PUT_LINE('Employee ID: ' || emp1.employee_id);
DBMS_OUTPUT.PUT_LINE('Job Title: ' || emp1.job_title);
END;
এখানে, employee_type
অবজেক্টের একটি ইনস্ট্যান্স emp1
তৈরি করা হয়েছে এবং এর মাধ্যমে first_name
, last_name
, employee_id
, এবং job_title
প্রোপার্টি অ্যাক্সেস করা হয়েছে।
PL/SQL-এ object types, constructor functions এবং inheritance এর মাধ্যমে আপনি আধুনিক Object-Oriented Principles প্রয়োগ করে আপনার ডেটাবেস অ্যাপ্লিকেশন তৈরি করতে পারবেন।
Read more